ফোরট্রানে Class এবং Object এর ব্যবহার
ফোরট্রান 90 সংস্করণ থেকে Object-Oriented Programming (OOP) এর ধারণা যোগ করা হয়েছে, যার মধ্যে Class এবং Object একটি মৌলিক অংশ হিসেবে ব্যবহৃত হয়। Class একটি template বা blueprint হিসেবে কাজ করে, যা Object তৈরি করার জন্য ব্যবহৃত হয়। ফোরট্রানে Class এবং Object এর ব্যবহার প্রোগ্রামিংয়ের মডুলারিটি এবং রিইউসেবিলিটি বাড়ানোর জন্য গুরুত্বপূর্ণ।
ফোরট্রানে Class এবং Object তৈরি এবং ব্যবহারের জন্য type, type-bound procedures (methods), এবং instantiate এর মতো কনসেপ্টগুলো ব্যবহার করা হয়।
১. Class তৈরি করা
ফোরট্রানে Class তৈরির জন্য type কিওয়ার্ড ব্যবহার করা হয়। একটি Class ডেটা এবং ফাংশন (methods) ধারণ করতে পারে। একটি Class-এ ডেটা সদস্য (data members) এবং মেথড (methods) অন্তর্ভুক্ত থাকে।
Class তৈরি করার সাধারণ গঠন:
type :: class_name
! সদস্য ভ্যারিয়েবল বা ডেটা সদস্য
integer :: member_variable
real :: another_member
! মেথড বা টাইপ-বাউন্ড প্রোসিডিউর
contains
procedure :: method_name
end type class_nametype: ফোরট্রানে Class বা derived type ঘোষণা করতে ব্যবহৃত হয়।contains: এখানে method বা function ঘোষণা করা হয়।
Class এর উদাহরণ:
module person_module
implicit none
type :: Person
character(len=30) :: name
integer :: age
contains
procedure :: set_name
procedure :: set_age
procedure :: display
end type Person
contains
! মেথড যা নাম সেট করে
subroutine set_name(this, new_name)
class(Person), intent(inout) :: this
character(len=30), intent(in) :: new_name
this%name = new_name
end subroutine set_name
! মেথড যা বয়স সেট করে
subroutine set_age(this, new_age)
class(Person), intent(inout) :: this
integer, intent(in) :: new_age
this%age = new_age
end subroutine set_age
! মেথড যা তথ্য প্রদর্শন করে
subroutine display(this)
class(Person), intent(in) :: this
print *, 'Name: ', this%name
print *, 'Age: ', this%age
end subroutine display
end module person_moduleএখানে:
Personএকটি ক্লাস, যার মধ্যেnameএবংageসদস্য ভ্যারিয়েবল রয়েছে।set_name,set_age, এবংdisplayমেথড বা টাইপ-বাউন্ড প্রোসিডিউর রয়েছে।
২. Object তৈরি এবং Class এর মেথড ব্যবহার করা
ফোরট্রানে Object তৈরি করার জন্য type-এর একটি ভ্যারিয়েবল তৈরি করা হয়। এই ভ্যারিয়েবলটি Class থেকে আসবে এবং method ব্যবহার করার জন্য তা কল করা হয়।
Object তৈরি এবং ব্যবহার করার উদাহরণ:
program object_example
use person_module
implicit none
type(Person) :: person1 ! Object তৈরি করা
character(len=30) :: input_name
integer :: input_age
! নাম এবং বয়স ইনপুট
print *, 'Enter name:'
read *, input_name
print *, 'Enter age:'
read *, input_age
! Object এর মেথড ব্যবহার
call person1%set_name(input_name)
call person1%set_age(input_age)
! Object এর তথ্য প্রদর্শন করা
call person1%display()
end program object_exampleএখানে:
type(Person)ব্যবহার করেperson1নামে একটি Object তৈরি করা হয়েছে, যাPersonক্লাসের একটি ইনস্ট্যান্স।set_nameএবংset_ageমেথডের মাধ্যমেperson1এরnameএবংageসেট করা হয়েছে।- অবশেষে,
displayমেথড ব্যবহার করেperson1এর তথ্য প্রিন্ট করা হয়েছে।
আউটপুট:
Enter name:
John
Enter age:
30
Name: John
Age: 30৩. Class এর মেম্বার ভ্যারিয়েবল এবং মেথড
ফোরট্রানে Class এর মধ্যে ভ্যারিয়েবল এবং ফাংশন/মেথড দুটি আলাদা করা যায়:
- মেম্বার ভ্যারিয়েবল (Member Variables): ডেটা সদস্য যা ক্লাসের মধ্যে সংরক্ষিত থাকে। প্রতিটি Object এর নিজস্ব ডেটা থাকে।
- মেথড (Methods): ক্লাসের মধ্যে ডিফাইন করা ফাংশন বা সাবরুটিন, যা ক্লাসের ডেটা পরিচালনা করতে সহায়ক।
৪. Encapsulation, Inheritance, and Polymorphism
ফোরট্রানে OOP ধারণা খুবই মৌলিক এবং Encapsulation (তথ্য লুকানো), Inheritance (উত্তরণ), এবং Polymorphism (একাধিক রূপ) এর মতো ক্ষমতা পুরোপুরি সমর্থিত নয়। তবে, ফোরট্রান 2003 সংস্করণ থেকে Encapsulation এবং Polymorphism এর কিছু রূপ পাওয়া যায়।
- Encapsulation: ক্লাসের মধ্যে ডেটা এবং ফাংশনগুলিকে একত্রিত করা যাতে বাইরের কোড অ্যাক্সেস করতে না পারে।
- Inheritance: এক ক্লাস থেকে অন্য ক্লাসের বৈশিষ্ট্য উত্তরাধিকারীভাবে গ্রহণ করা।
- Polymorphism: একাধিক ফাংশন বা মেথড যা একই নামের সাথে কাজ করতে পারে, কিন্তু তাদের আচরণ ভিন্ন হতে পারে।
৫. Class ব্যবহার করার সুবিধা
- ডেটা সংগঠন: ক্লাসের মাধ্যমে সম্পর্কিত ডেটাকে একত্রিত করা যায়, যা প্রোগ্রামিং কোডকে আরও মডুলার এবং পরিষ্কার করে তোলে।
- কোড পুনঃব্যবহারযোগ্যতা: একবার তৈরি করা ক্লাস পুনঃব্যবহার করা যায় অন্যান্য অংশে বা অন্যান্য প্রোগ্রামে।
- ডেটা এবং কার্যকলাপ একত্রিত: ক্লাসে ডেটা এবং কার্যকলাপ (ফাংশন/মেথড) একত্রিত করার মাধ্যমে কোড রক্ষণাবেক্ষণ সহজ হয়।
- বড় প্রজেক্টে সুবিধা: বড় এবং জটিল প্রজেক্টে কোডের মডুলারিটি এবং সুসংগততা বজায় রাখে।
উপসংহার
ফোরট্রানে Class এবং Object ব্যবহারের মাধ্যমে আপনি আরও মডুলার, পরিষ্কার এবং পুনঃব্যবহারযোগ্য কোড লিখতে পারবেন। Object-Oriented Programming (OOP) ফিচারগুলি ফোরট্রানে type, type-bound procedures এবং object instances এর মাধ্যমে বাস্তবায়ন করা সম্ভব, যা প্রোগ্রামের জটিলতা কমিয়ে দেয় এবং রক্ষণাবেক্ষণ সহজ করে তোলে।
Read more